1. Field of the Invention
This invention is related to the field of peer-to-peer networks and, more specifically, to handling the update of objects in a peer-to-peer network.
2. Description of the Related Art
Peer-to-peer networks are one model for linking a set of nodes (e.g. computer systems) into a system. In peer-to-peer networks, the nodes may typically have equivalent responsibilities and capabilities (as compared to a client-server network, in which certain server nodes have specified functions that those nodes provide for the other nodes). In some cases, the nodes may acquire various responsibilities/capabilities in the system and release the responsibilities/capabilities as they see fit.
Various objects may be shared among the nodes in a peer-to-peer network. That is, various nodes in the peer-to-peer network may have copies of the objects. If an object may be updated by the nodes, then a mechanism for ensuring that the updates are consistently applied to the object is needed. Typically, peer-to-peer networks have employed one of two mechanisms: coherent updates or a central server to manage versions of the object.
In a coherent update system, an object may have one owner at any given time. The owner is the one to have mostly recently updated the object, and has the most recent copy of the object. Other nodes may request a copy of the object from the owner. If another node is to modify the object, the node obtains an exclusive copy of the object from the owner (thus becoming the new owner). Once the updates are made by the new owner, the updates may be shared with other nodes.
In a peer-to-peer network, there is no guarantee that the owner of an object can be located. For example, the network may partition occasionally into two or more sections (the sections are referred to as partitions). The partitions, at least temporarily, cannot communicate with each other. For example, a partition may be formed due to a device, such as a router or switch, within the network failing (e.g. crashing or failing permanently). A partition may be formed due to interconnect failure within the network (e.g. a cut line), corruption of routing table information, power failure in the power system supplying a portion of the network, etc. Once the failure is corrected, the partition is said to “heal” by reestablishing communication paths between the nodes that were previously in separate partitions. If an owner of an object is in one partition and the node requesting the object is in another partition, the owner cannot be found until the partition heals.
With a central server system, requests for versions of the object are routed to a central server node which controls access to the object. There may be a hierarchical structure to the central server (e.g. request servers that receive requests from various subsets of the nodes), but the central server still manages the versions.
In a peer-to-peer network, as the number of nodes grows, the central server may become a bottleneck to the performance of the network as a whole. That is, nodes may wait for longer periods of time before being granted a version of a requested object. Furthermore, the central server system is subject to partitioning as well, and thus some nodes may, at least temporarily, lose the ability to acquire a version of an object.